草庐IT

LeetCode - 回文数

全部标签

C++判断一个数是否为回文数的算法

C++判断一个数是否为回文数的算法回文数是指正序(从左向右)和倒序(从右向左)读都相同的整数。在C++中,我们可以使用算法来判断一个数是否为回文数。下面是一个详细的解释和相应的源代码。算法思路:将给定的整数转换成字符串。使用双指针法来检查字符串的左右字符是否相等。双指针法使用两个指针,一个指向字符串的开头,另一个指向字符串的末尾。我们将它们分别称为left和right指针。在每一步中,我们比较left指针和right指针所指向的字符。如果它们不相等,则该数不是回文数。如果它们相等,则将left指针向右移动一步,同时将right指针向左移动一步,继续比较下一对字符。重复步骤3,直到left指针超

LeetCode | 206. 反转链表

LeetCode|206.反转链表OJ链接这里有两个思路我们先来看第一个思路:创建一个新的链表,然后将原链表头插头插需要保存下一个的地址,再头插代码如下:structListNode*reverseList(structListNode*head){structListNode*cur=head;structListNode*newHead=NULL;while(cur){structListNode*next=cur->next;//头插cur->next=newHead;newHead=cur;cur=next;}returnnewHead;}思路二:这个思路二,就是定义三个指针,n1,n

leetcode 74. 搜索二维矩阵(java)

搜索二维矩阵leetcode74.搜索二维矩阵题目描述抽象BST代码演示抽象BSTleetcode74.搜索二维矩阵来源:力扣(LeetCode)链接:https://leetcode.cn/problems/search-a-2d-matrix题目描述给你一个满足下述两条属性的mxn整数矩阵:每行中的整数从左到右按非递减顺序排列。每行的第一个整数大于前一行的最后一个整数。给你一个整数target,如果target在矩阵中,返回true;否则,返回false。示例1:输入:matrix=[[1,3,5,7],[10,11,16,20],[23,30,34,60]],target=3输出:tru

leetcode:206. 反转链表

一、题目 函数原型:structListNode*reverseList(structListNode*head)二、思路要对链表进行反转,可以有两种方法:1.改变链表中每个结点之间的指针域指向,最后返回尾结点即可。2.新建一个链表,将原链表中的结点依次头插到新链表中,最后返回新链表。三、代码实现代码1/***Definitionforsingly-linkedlist.*structListNode{*intval;*structListNode*next;*};*/structListNode*reverseList(structListNode*head){if(head==NULL)/

leetcode链表

这几天手的骨裂稍微好一点了,但是还是很疼,最近学校的课是真多,我都没时间做自己的事,但是好在今天下午是没有课的,我也终于可以做自己的事情了。今天分享几道题目移除链表元素这道题我们将以两种方法开解决,但是我觉得从总体思路上来讲,都可以称为双指针,第一个就是我们在我们原链表上进行修改,我们和之前顺序表的一个题目很是相似,就是我们遇到val就删除,那因为是链表,我们可以理解为释放它这个当前的空间,然后进行当前位置的前一个和后以一个位置的链接就行。我们给两个指针,然后cur的作用就是进行遍历,我们的prev这个指针就是找到它当前位置的前一个位置,因为我们要删除当前的位置,如果没有前面这个前驱指针,我们

C++深度优先搜索(DFS)算法的应用:树中可以形成回文的路径数

本文涉及知识点深度优先搜索(DFS)状态压缩题目给你一棵树(即,一个连通、无向且无环的图),根节点为0,由编号从0到n-1的n个节点组成。这棵树用一个长度为n、下标从0开始的数组parent表示,其中parent[i]为节点i的父节点,由于节点0为根节点,所以parent[0]==-1。另给你一个长度为n的字符串s,其中s[i]是分配给i和parent[i]之间的边的字符。s[0]可以忽略。找出满足u如果一个字符串正着读和反着读都相同,那么这个字符串就是一个回文。示例1:输入:parent=[-1,0,0,1,1,2],s=“acaabc”输出:8解释:符合题目要求的节点对分别是:(0,1)、

算法leetcode|87. 扰乱字符串(rust重拳出击)

文章目录87.扰乱字符串:样例1:样例2:样例3:提示:分析:题解:rust:go:c++:python:java:87.扰乱字符串:使用下面描述的算法可以扰乱字符串s得到字符串t:如果字符串的长度为1,算法停止如果字符串的长度>1,执行下述步骤:在一个随机下标处将字符串分割成两个非空的子字符串。即,如果已知字符串s,则可以将其分成两个子字符串x和y,且满足s=x+y。随机决定是要「交换两个子字符串」还是要「保持这两个子字符串的顺序不变」。即,在执行这一步骤之后,s可能是s=x+y或者s=y+x。在x和y这两个子字符串上继续从步骤1开始递归执行此算法。给你两个长度相等的字符串s1和s2,判断s

【LeetCode力扣】11. 盛最多水的容器 (中等)

 目录1、题目介绍2、解题2.1、解题思路 2.2、图解说明 2.3、解题代码1、题目介绍原题链接:11.盛最多水的容器-力扣(LeetCode)输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组[1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。示例2:输入:height=[1,1]输出:1提示:n==height.length202、解题2.1、解题思路这道题最优的方法就是用双指针,我们可以用指针left和指针right分别指向数组height[]的第一个数和最后一个数,然后每次经过比较两个指针指向的数值的大

【leetcode报错】 leetcode格式问题解决:error: stray ‘\302’ in program [solution.c]

leetcode格式问题解决一、情景再现二、报错原因三、解决方法四、修正结果一、情景再现二、报错原因该错误是指源程序中有非法字符,需要将非法字符去掉。一般是由于coder1.使用中文输入法或者2.从别的地方直接复制粘贴代码造成的。代码中出现了中文空格,中文引号,各种中文标点符号都会出现,这是复制后leetcode的格式问题,简单修改一下就OK了。三、解决方法(1)把出错行的空格及其前后空格删掉重新打一下,看是否还是出现问题。(2)把明显和其他标点符号颜色不同的改掉。(大部分编译器都有颜色识别)(3)在出现问题的行中,删掉直接全部重打。四、修正结果成功啦>o( ̄▽ ̄)ブ

LeetCode 热题100——链表专题(一)

一、俩数相加2.俩数相加(题目链接)思路:这题题目首先要看懂,以示例1为例 即 342+465=807,而产生的新链表为7->0->8.可以看成简单的从左向右,低位到高位的加法运算,4+6=10,逢10进1,新链表第三位为3+4+1(第二位进的1),需要注意的的点是当9->9->9和9->9->9->9相加,相当于9->9->9->0和9->9->9->9相加代码实现:/***Definitionforsingly-linkedlist.*structListNode{*intval;*structListNode*next;*};*/typedefstructListNodeListNode